Embedded processors within a semiconductor device require software which may be read from an internal or an external memory.
Internal memory is advantageous because it can be accessed more quickly than external memory, as it can be directly connected to the processor bus. Thus, internal memory should be used when fast access speed is required. However, the larger the internal memory, the larger the size of the silicon chip which, of course, affects manufacturing costs. So, in practice, the internal memory size must be kept small, even though this limits the features which can be implemented in the internal memory software. That is, a compromise has to be found between fast access and small chip size.
For external memory, on the other hand, the size of the memory has no affect on silicon chip size. However, an external memory requires more cycles in order to be accessed through internal bus bridges, a memory controller, an external system bus and so on. Thus, external memory can be used when the software is too big for internal memory and/or when particularly fast access is not required.
To partially solve the problems associated with using an external memory, processor cache memory has been introduced. A cache memory provides fast access for data which is frequently accessed, whilst reserving the less frequently accessed data in the external memory. The disadvantage of cache memory, however, is that the cache memory will only be updated when a cache miss happens i.e. when a read request cannot be satisfied by the cache memory but requires the external memory. This updating process takes extra cycles.